function merge1(nums1: number[], m: number, nums2: number[], n: number): void {
    nums1 =  nums1.filter((item)=> !!item);
    nums2 = nums2.filter((item)=> !!item);
    nums1.push(...nums2)
    nums1.sort((a,b)=> a-b)
    console.log(nums1)
};
// 投机取巧 不认

function merge2(nums1: number[], m: number, nums2: number[], n: number): void {
    nums1.splice(m,n+m)
    // 先去掉0 .。。
    for(let i = 0; i < nums2.length; i++) {
        const index = nums1.findIndex((item)=>item >= nums2[i]);
        // console.log(index)
        if(index === -1) {
            // nums1.splice(index, 0,nums2[i]);
            nums1.splice(nums1.length,0,nums2[i]);
        } else{
            nums1.splice(index, 0,nums2[i]);
        }
    }
    // console.log(nums1)
};
// 找个双指针看看

function merge(nums1: number[], m: number, nums2: number[], n: number): void {
    nums1.splice(m,nums1.length);
    // 去掉0
    // splice是浅拷贝 
    const nums3 = new Array(m+n).fill(0);
    //    console.log(nums1);
    //第一个开始
   let one = 0;
    //第二个开始
   let two = 0;
   let temp = 0;

   while(one<m||two<n){
       if(one===m){
            // 第一个数组遍历完毕 第二个还未完
            temp= nums2[two++];
       } else if(two===n){
            temp= nums1[one++]
       } else if(nums1[one]<nums2[two]){
        //    数组比较大小
        temp = nums1[one++];
       } else{
        temp = nums2[two++];
       }
       nums3[two+one-1] = temp
   }
   for(var i=0; i<nums3.length; i++) {
       nums1[i] = nums3[i]
   }
   console.log(nums1)
};
const nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
merge(nums1,m,nums2,n)